/*
 * @lc app=leetcode.cn id=111 lang=javascript
 *
 * [111] 二叉树的最小深度
 */

// @lc code=start
/**
 * Definition for a binary tree node.
 * function TreeNode(val, left, right) {
 *     this.val = (val===undefined ? 0 : val)
 *     this.left = (left===undefined ? null : left)
 *     this.right = (right===undefined ? null : right)
 * }
 */
/**
 * @param {TreeNode} root
 * @return {number}
 */

/* 深度搜索 */
// var minDepth = function (root) {
//   if (root == null) {
//     return 0;
//   }
//   if (root.left == null && root.right == null) {
//     return 1;
//   }
//   let min = Infinity;
//   if (root.left != null) {
//     min = Math.min(min, minDepth(root.left));
//   }
//   if (root.right != null) {
//     min = Math.min(min, minDepth(root.right));
//   }
//   return min + 1;
// };
/* 广度搜索 */
var minDepth = function (root) {
  if (root == null) {
    return 0;
  }
  // 定义一个队列 初始化
  let queue = [root];
  root.deep = 1;
  while (queue[0]) {
    let node = queue.shift();
    if (node.left == null && node.right == null) {
      return node.deep;
    }

    if (node.left != null) {
      node.left.deep = node.deep + 1;
      queue.push(node.left);
    }
    if (node.right != null) {
      node.left.deep = node.deep + 1;
      queue.push(node.right);
    }
  }
  return 0;
};
// @lc code=end
